package br.com.cfccultura.admin.model.vo;

import java.util.Date;

public class PontoEletronico extends ValueObject {
	
	private static final long serialVersionUID = -9146308175216444030L;
	private Integer codigo;
	private Funcionario funcionario;
	private Date entrada;
	private Date saida;
	private String ipEntrada;
	private String ipSaida;
	
	public PontoEletronico() {}
	public PontoEletronico(Integer codigo) {
		this.codigo = codigo;
	}
	
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public Funcionario getFuncionario() {
		return funcionario;
	}
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	public Date getEntrada() {
		return entrada;
	}
	public void setEntrada(Date entrada) {
		this.entrada = entrada;
	}
	public Date getSaida() {
		return saida;
	}
	public void setSaida(Date saida) {
		this.saida = saida;
	}
	public String getIpEntrada() {
		return ipEntrada;
	}
	public void setIpEntrada(String ipEntrada) {
		this.ipEntrada = ipEntrada;
	}
	public String getIpSaida() {
		return ipSaida;
	}
	public void setIpSaida(String ipSaida) {
		this.ipSaida = ipSaida;
	}
	public String getTotalHoras() {
		if(saida == null)
			return "-";
		long total = saida.getTime() - entrada.getTime();
		long horas = total / (1000 * 60 * 60);
		long minutos = (total / (1000 * 60)) - (horas * 60);
		
		if(minutos < 15) {
			minutos = 0;
		} else if(minutos >= 15 && minutos <= 30) {
			minutos = 30;
		} else if(minutos > 30 && minutos < 45) {
			minutos = 30;
		} else if(minutos >= 45) {
			minutos = 0;
			horas ++;
		}

		String descricao = horas + "";
		if(minutos != 0) {
			descricao += ":" + minutos;
		} else {
			descricao += ":00";
		}
		return descricao;
	}
	
	public int getHora() {
		if(saida == null)
			return 0;
		long total = saida.getTime() - entrada.getTime();
		long horas = total / (1000 * 60 * 60);
		long minutos = (total / (1000 * 60)) - (horas * 60);
		
		if(minutos >= 45) {
			minutos = 0;
			horas ++;
		}

		return (int)horas;
	}
	
	public int getMinutos() {
		if(saida == null)
			return 0;
		long total = saida.getTime() - entrada.getTime();
		long horas = total / (1000 * 60 * 60);
		long minutos = (total / (1000 * 60)) - (horas * 60);
		
		if(minutos < 15) {
			minutos = 0;
		} else if(minutos >= 15 && minutos <= 30) {
			minutos = 30;
		} else if(minutos > 30 && minutos < 45) {
			minutos = 30;
		} else if(minutos >= 45) {
			minutos = 0;
		}

		return (int)minutos;
	}
}
